#ifndef MATHS_H
#define MATHS_H

#include "tools.h"

#define PI      3.14159265359

inline scalar sign(const scalar & x) { return (x > 0) ? 1 : ((x < 0) ? -1 : 0); }
inline scalar abs(const scalar & x) { return (x > 0) ? x : -x; }
inline scalar max(const scalar & x, const scalar & y) { return (x > y) ? x : y; }
inline scalar min(const scalar & x, const scalar & y) { return (x > y) ? y : x; }
inline integer mod(const integer & d, const integer & M) { return d >= 0 ? d % M : d + M * (- d / M + 1); }

inline scalar MC(scalar L, scalar R, scalar C) { return sign(L) == sign(R) ? min(abs(C), min(abs(R), abs(L)) * 2.0) * sign(C) : 0 ; }

#endif // MATHS_H
